package com.ygxsk.carhome.ui;

import android.app.Activity;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;

import com.afollestad.materialdialogs.MaterialDialog;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.ColorUtils;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.NetworkUtils;
import com.blankj.utilcode.util.ScreenUtils;
import com.blankj.utilcode.util.StringUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.blankj.utilcode.util.Utils;
import com.gyf.immersionbar.ImmersionBar;
import com.kongzue.dialogx.dialogs.PopTip;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.components.support.RxAppCompatActivity;
import com.umeng.message.PushAgent;
import com.ygxsk.carhome.R;
import com.ygxsk.carhome.alertview.AlertView;
import com.ygxsk.carhome.alertview.OnItemClickListener;
import com.ygxsk.carhome.constant.ConstantApi;
import com.ygxsk.carhome.constant.ConstantSign;
import com.ygxsk.carhome.listener.Delivery;
import com.ygxsk.carhome.listener.DoSomeThingListener;
import com.ygxsk.carhome.listener.DoubleClickListener;
import com.ygxsk.carhome.response.EvaluateWadeDataInfo;
import com.ygxsk.carhome.retrofit.AddLogUpLoadInfo;
import com.ygxsk.carhome.retrofit.ApiException;
import com.ygxsk.carhome.retrofit.ApiRequestSubListener;
import com.ygxsk.carhome.retrofit.ApiService;
import com.ygxsk.carhome.retrofit.ErrorConsumer;
import com.ygxsk.carhome.retrofit.NetworkManager;
import com.ygxsk.carhome.retrofit.ResponseTransformer;
import com.ygxsk.carhome.sys.Session;
import com.ygxsk.carhome.utils.CommUtils;
import com.ygxsk.carhome.utils.StringCodeUtils;
import com.ygxsk.carhome.utils.ViewUitls;
import com.ygxsk.integrated.retrofit.Parameterkey;
import com.zhongjh.albumcamerarecorder.settings.CameraSetting;
import com.zhongjh.common.enums.MimeType;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.concurrent.TimeUnit;

import butterknife.ButterKnife;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.disposables.CompositeDisposable;
import io.reactivex.rxjava3.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import rxdogtag2.RxDogTag;
import rxdogtag2.autodispose2.AutoDisposeConfigurer;

public abstract class ErrorActivity extends RxAppCompatActivity {

    //父亲的 ViewBinding
//    protected ViewBinding viewBindingParent;

    protected FrameLayout loading;
    protected TextView no_data_one;

    private RelativeLayout layoutNoData;
    private RelativeLayout layoutNullData;
    private ImageView imageViewErrorNull;
    private TextView textViewErrorNull;

    //右侧弹窗的布局
    protected ImageView imageViewRight;

    /**
     * 父类中的一个用于在内存中取出userToken的内容
     */
    protected Session mSession;

    //页面通用的弹窗
    protected AlertView mAlertView;

    //标志是从哪儿跳转过来的， 如果子类实现即有这个变量值；
    //flag_jumpfrom_where = bundle.getInt(ExtraKey.EXTRA_JUMPFROM_WHERE)
    protected int flag_jumpfrom_where = -1;


    //页面通用的提交弹窗
    protected MaterialDialog materialDialog;


    //==============================================================================================
    /**
     * 用来标记取消
     */
    private final Object object = new Object();

    /**
     * 避免在界面之中大量创建Activity.this之引用,必须设置一个默认值，不然吐司失败，因为mActivityInstance是空值
     */
    //protected Activity mActivityInstance = ErrorActivity.this;
    protected Activity mActivityInstance = this;

    //部分界面用到
    protected CompositeDisposable mCompositeDisposable = new CompositeDisposable();

    //======================================================================================================
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//        Bundle extras_bundle = this.getIntent().getExtras();
//        if (extras_bundle != null) {
//            flag_jumpfrom_where = extras_bundle.getInt(ExtraKey.EXTRA_JUMPFROM_WHERE, 0);
//        }

        mActivityInstance = this;

        //在生命周期的早期植入，
        RxDogTag.builder()
                .configureWith(AutoDisposeConfigurer::configure)
                .install();


//        if (viewBindingParent != null) {
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "-----------viewBindingParent不是空-----它是---" + viewBindingParent.getClass().getSimpleName().toString());
//            View viewRoot = viewBindingParent.getRoot();
//            setContentView(viewRoot);
//        } else {
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "------------------------viewBindingParent--------------------是空的----------------------");
//            setContentView(getContentViewId());
//        }

//        if (viewBindingParent != null) {
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "-----------viewBindingParent不是空-----它是---" + viewBindingParent.getClass().getSimpleName().toString());
//        } else {
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "------------------------viewBindingParent--------------------是空的----------------------");
//            setContentView(getContentViewId());
//        }

        setContentView(getContentViewId());

        ButterKnife.bind(this);//首次绑定即可

        //初始化沉浸式
        initImmersionBar();

        //Session.pushOneActivity(this);
        mSession = Session.get(this);

        //开始find首页的view
        Toolbar mToolBar = (Toolbar) findViewById(R.id.toolbarygxskout);

        //有的Activity不需要这个toolbar
        if (mToolBar != null) {
            mToolBar.setTitle("");
            setSupportActionBar(mToolBar);
            if (getSupportActionBar() != null) {
                // Enable the Up button
                getSupportActionBar().setDisplayHomeAsUpEnabled(false);
                getSupportActionBar().setDisplayShowTitleEnabled(false);

            }

            imageViewRight = mToolBar.findViewById(R.id.imageviewinphone);

            //需要不需要每次new一个。
            initToolBar(new ToolbarHelper(mToolBar, this));
        }

        //Watermark.getInstance().show(this, "itchen");

        //如果不判断，可能会导致APP提前获取手机信息而导致审核不通过。
        if (MMKV.defaultMMKV().decodeBool(ConstantSign.P_SECRECYTURL_AGREE)) {
            //LogUtils.d("itchen----P_SECRECYTURL_AGREE---已经同意了 登录页的 隐私协议，执行 PushAgent.getInstance(this).onAppStart()");
            PushAgent.getInstance(this).onAppStart();
        }

    }


    @Override
    public Resources getResources() {
        Resources res = super.getResources();
        if (res != null) {
            Configuration config = new Configuration();
            config.setToDefaults();
            res.updateConfiguration(config, res.getDisplayMetrics());
        }
        return res;
    }

    @Override
    public void onConfigurationChanged(@NonNull Configuration newConfig) {
        if (newConfig.fontScale != 1) {//非默认值
            getResources();
        }
        super.onConfigurationChanged(newConfig);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }

    protected abstract int getContentViewId();

    //    protected abstract void setStatusBar();
    protected void initImmersionBar() {

        //这样可以保证状态栏是透明的并且文字是黑色
        //BarUtils.setStatusBarLightMode(this, true);

        //设置共同沉浸式样式
        ImmersionBar.with(this)
                .statusBarColor(R.color.toolbarbg)//白色的
                .navigationBarColor(R.color.black)
                .statusBarDarkFont(true)   //状态栏字体是深色，不写默认为亮色
                .init();
    }

    /**
     * 做缓存数据的空实现
     */
    protected void methodLoadCache(String jsonStringCache) {
    }

    /**
     * 做非20000的界面处理的
     *
     * @param what_method   接口标识
     * @param serverCode    接口响应码
     * @param serverMessage 接口响应消息，做提示用。
     */
    public void methodNotSuccessData(int what_method, String serverCode, String serverMessage) {
    }

//    /**
//     * 父亲内设置状态栏假若子类共通那么就调用这个
//     */
//    protected void setStatusBarParent(View _viewSubOutSide) {
//        //尽量保持状态栏是主题的白色
//        BarUtils.setStatusBarColor(this, ColorUtils.getColor(R.color.colorPrimary));
//        //这样可以保证状态栏是透明的并且文字是黑色
//        BarUtils.setStatusBarLightMode(this, true);
//        //设置然哪个界面
//        BarUtils.addMarginTopEqualStatusBarHeight(_viewSubOutSide);
//    }

    protected abstract void initToolBar(ToolbarHelper toolbarHelper);


    public final class ToolbarHelper {

        private final Toolbar toolbar;
        private final ErrorActivity activity;

        /**
         * 界面启动的时候直接去取标题
         */
        public ToolbarHelper(Toolbar _toolbar, ErrorActivity _activity) {
            this.toolbar = _toolbar;
            this.activity = _activity;
        }

        public Toolbar getToolbar() {
            return toolbar;
        }

        /**
         * 获取标题的文本控件textView
         */
        public TextView getTitleTextView() {

            if (toolbar != null) {

                TextView textViewTitleError = (TextView) toolbar.findViewById(R.id.toolbartitlehomemiddle);

                //做设置。
                if (ScreenUtils.getScreenWidth() > 1080) {

                    //LogUtils.d("itchen--17号字体");

                    /*if ((TextView) toolbar.findViewById(R.id.toolbar_titleinhome) != null) {
                        ((TextView) toolbar.findViewById(R.id.toolbar_titleinhome)).setTextSize(17);
                    }*/

                    if (textViewTitleError != null) {
                        textViewTitleError.setTextSize(17);
                    }
                }

                //LogUtils.d("itchen-----> getTitleTextView = "+textViewTitleError.toString());

                return textViewTitleError;

            } else {//其实null 也行，但是尽量避免报错

                //LogUtils.d("itchen-----> getTitleTextView  报错");

                return new TextView(activity);
            }

        }

        /**
         * 在界面的右上角添加上版本号，可以主动设置，有的界面可以不设置
         */
        public void setVersionName(boolean isShowVersionName, String versionName) {

            if (toolbar != null) {
                //2020-12-13 13:19:07 当然这个默认是隐藏的。
                if ((TextView) toolbar.findViewById(R.id.toprightversionname) != null) {

                    if (isShowVersionName) {
                        Delivery.getInstance().post(new Runnable() {
                            @Override
                            public void run() {
                                ((TextView) toolbar.findViewById(R.id.toprightversionname)).setVisibility(View.VISIBLE);
                                ((TextView) toolbar.findViewById(R.id.toprightversionname)).setText("v" + versionName);
                                //((TextView) toolbar.findViewById(R.id.toprightversionname)).setBackgroundColor(ColorUtils.getColor(R.color.gray01));
                            }
                        });

                    } else {

                        Delivery.getInstance().post(new Runnable() {
                            @Override
                            public void run() {
                                ((TextView) toolbar.findViewById(R.id.toprightversionname)).setVisibility(View.GONE);
                                ((TextView) toolbar.findViewById(R.id.toprightversionname)).setText("");
                                ((TextView) toolbar.findViewById(R.id.toprightversionname)).setBackgroundColor(ColorUtils.getColor(R.color.white));
                            }
                        });

                    }
                }
            }

        }

        /**
         * 设置标题内容
         */
        public void setTitle(String title) {

            //第一种写法
            //TextView titleTitleTop = (TextView) toolbar.findViewById(R.id.toolbar_title);
            //if (titleTitleTop != null) {
            //  titleTitleTop.setText(title);
            //}

            //第二种写法
            if (toolbar != null) {
                //这个仅仅是填充标题
                if ((TextView) toolbar.findViewById(R.id.toolbartitlehomemiddle) != null) {

                    if (ScreenUtils.getScreenWidth() > 1080) {
                        //LogUtils.d("itchen--17号字体");
                        ((TextView) toolbar.findViewById(R.id.toolbartitlehomemiddle)).setTextSize(17);
                    }

                    ((TextView) toolbar.findViewById(R.id.toolbartitlehomemiddle)).setText(title);
                }
            }

            //第三种写法取不到
            /*if (toolbar!=null){
                if (textViewTitleError!=null){
                    textViewTitleError.setText(title);
                }
            }*/

        }

        /**
         * 设置右侧文本内容做单独设置的,2018/12/4 itchen这里目前仅仅用在购物车
         */
        public void setTextViewRight(boolean flag_showOrHiden, final String textContent, OnClickListener onClickListener) {

            //final TextView textViewRightNomal = (TextView) toolbar.findViewById(R.id.top_arrow_rightinhome);//正常的文字信息内容。

            if (flag_showOrHiden) {

                if (toolbar != null) {

                    if (((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)) != null) {

                        ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).post(new Runnable() {

                            @Override
                            public void run() {
                                ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setVisibility(View.VISIBLE);
                                ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setText(textContent);
                                ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setOnClickListener(onClickListener);
                            }
                        });

                    } else {
//                        LogUtils.d("itchen---->右侧是空值");
                    }
                }

            } else {

                if (toolbar != null) {
                    ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).post(new Runnable() {
                        @Override
                        public void run() {
                            //少执行一步操作
                            //((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setText("");
                            ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setVisibility(View.GONE);

                        }
                    });
                }
                //重复执行一次可以吗？
            }
        }

//        //2023-7-10 09:18:46 暂时的可以去掉，勿删；； 右侧【搜索】的功能，默认 是【搜索】；
//        public void setTextViewRightSearch(boolean flag_showOrHiden, OnClickListener onClickListener) {
//            //final TextView textViewRightNomal = (TextView) toolbar.findViewById(R.id.top_arrow_rightinhome);//正常的文字信息内容。
//            if (flag_showOrHiden) {
//                if (toolbar != null) {
//                    if (((TextView) toolbar.findViewyId(R.id.top_search_with_image)) != null) {
//
//                        ((TextView) toolbar.findViewById(R.id.top_search_with_image)).post(new Runnable() {
//                            @Override
//                            public void run() {
//                                ((TextView) toolbar.findViewById(R.id.top_search_with_image)).setVisibility(View.VISIBLE);
//                                //这个是默认搜索的功能：文字即是【搜索】
//                                //((TextView) toolbar.findViewById(R.id.top_search_with_image)).setText(textContent);
//                                ((TextView) toolbar.findViewById(R.id.top_search_with_image)).setOnClickListener(onClickListener);
//                            }
//                        });
//
//                    } else {
////                        LogUtils.d("itchen---->右侧是空值");
//                    }
//                }
//
//            } else {
//
//                if (toolbar != null) {
//                    ((TextView) toolbar.findViewById(R.id.top_search_with_image)).post(new Runnable() {
//                        @Override
//                        public void run() {
//                            //少执行一步操作
//                            //((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setText("");
//                            ((TextView) toolbar.findViewById(R.id.top_search_with_image)).setVisibility(View.GONE);
//                        }
//                    });
//                }
//                //重复执行一次可以吗？
//            }
//        }

        /**
         * 设置右侧顶部导航条的【消息图片】的内容,2019年05月05日发现这个图片和购物车右侧【编辑】冲突了。
         * 2024-1-10 因为修改优惠券发放。添加按钮说是添加一个加号，然后下边是列表内容。
         */
        public void setImageViewRight(boolean flag_showOrHiden, int drawableId, OnClickListener onClickListener) {

            if (flag_showOrHiden) {//如果 展示 那么添加点击事件

                if (toolbar != null) {

                    if ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone) != null) {
                        ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone)).setVisibility(View.VISIBLE);

                        //R.drawable.lianxi
//                        ((ImageView) toolbar.findViewById(R.id.imageviewinphone)).setBackground(ContextCompat.getDrawable(ErrorActivity.this, drawableId));
                        ((ImageView) toolbar.findViewById(R.id.imageviewinphone)).setBackground(ContextCompat.getDrawable(ErrorActivity.this, drawableId));
                        ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone)).setOnClickListener(onClickListener);
                    }

                    //那么他要隐藏右侧【编辑】或者【完成】文字按钮功能
                    ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setVisibility(View.GONE);

                }

            } else {
                //将该为民电话布局隐藏掉
                if ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone) != null) {
                    ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone)).setVisibility(View.GONE);
                    //((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone)).setOnClickListener(onClickListener);
                }
            }

        }

        //为了弹窗所以
        public ImageView getImageViewRight() {

            ImageView imageView = null;

            if (toolbar != null) {

//                if ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone) != null) {
                imageView = ((ImageView) toolbar.findViewById(R.id.imageviewinphone));
//                }

            }

            return imageView;
        }

        /**
         * 左侧的【返回按钮】的显示隐藏，【回退按钮】
         *
         * @param isShow
         * @param imageResource
         * @param clickListener
         */
        public void setLayoutLeft(boolean isShow, int imageResource, OnClickListener clickListener) {

            //RelativeLayout layoutLeft = ((RelativeLayout) toolbar.findViewById(R.id.toolbar_layoutbackinhome));
            //ImageView imageleft = (ImageView) toolbar.findViewById(R.id.top_arrow_back);

            if (toolbar != null) {

                if (((RelativeLayout) toolbar.findViewById(R.id.toolbar_layoutbackinhome)) != null) {

                    if (isShow) {

                        CommUtils.setViewVisible(((RelativeLayout) toolbar.findViewById(R.id.toolbar_layoutbackinhome)));

                        if (((ImageView) toolbar.findViewById(R.id.top_arrow_back)) != null) {
                            //((ImageView) toolbar.findViewById(R.id.top_arrow_back)).setImageResource(imageResource);
                            if (imageResource != 0) {
                                ((ImageView) toolbar.findViewById(R.id.top_arrow_back)).setBackgroundResource(imageResource);
                            }
                        }

                        if (clickListener != null) {
                            ((RelativeLayout) toolbar.findViewById(R.id.toolbar_layoutbackinhome)).setOnClickListener(clickListener);
                        }

                    } else {
                        CommUtils.setViewGone(((RelativeLayout) toolbar.findViewById(R.id.toolbar_layoutbackinhome)));
                    }
                }
            }

        }

        /**
         * 【回退按钮右侧】，webView的时候顶部的关闭按钮，貌似暂时只有在钱包的时候用到
         */
        public void setLayoutClose(boolean isShow, String text, OnClickListener clickListener) {
            //TextView texttopclose = toolbar.findViewById(R.id.texttopclose);
            if (toolbar != null) {
                if (((TextView) toolbar.findViewById(R.id.texttopclose)) != null) {
                    if (isShow) {
                        CommUtils.setViewVisible(((TextView) toolbar.findViewById(R.id.texttopclose)));
                        ((TextView) toolbar.findViewById(R.id.texttopclose)).setText(text);
                        ((TextView) toolbar.findViewById(R.id.texttopclose)).setOnClickListener(clickListener);
                    } else {
                        CommUtils.setViewGone(((TextView) toolbar.findViewById(R.id.texttopclose)));
                    }
                }
            }
        }

        /**
         * 设置扫一扫的内容
         */
//        public void setLayoutSao(boolean isShow, OnClickListener clickListener) {
//            if (toolbar != null) {
//                if (((RelativeLayout) toolbar.findViewById(R.id.layoutimagesao)) != null) {
//                    if (isShow) {
//                        CommUtils.setViewVisible(((RelativeLayout) toolbar.findViewById(R.id.layoutimagesao)));
//                        ((RelativeLayout) toolbar.findViewById(R.id.layoutimagesao)).setOnClickListener(clickListener);
//                    } else {
//                        CommUtils.setViewGone(((RelativeLayout) toolbar.findViewById(R.id.layoutimagesao)));
//                    }
//                }
//            }
//        }


        /**
         * @param isShow                是否显示右侧按钮布局 true是展示，false是隐藏
         * @param isNomalOrRoundOrColor 普通按钮还是圆角按钮0是不展示的情况，1是普通风格，2是圆角风格
         * @param textContent           文字内容
         * @param clickListener         点击事件
         */
        public void setLayoutRight(boolean isShow, int isNomalOrRoundOrColor, String textContent, OnClickListener clickListener) {

            //TextView textViewRightNomal = ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome));//正常的右侧点击文字。
            //展示普通的右侧按钮，如果均不展示那么isNomalOrRound填写为2就可以了。

            if (toolbar != null) {

                if (isShow) {

                    if (toolbar != null) {

                        if ((toolbar.findViewById(R.id.top_arrow_rightinhome) != null)) {

                            //这个是整体的右侧按钮的显示隐藏---这个一定要展示
                            CommUtils.setViewVisible(((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)));//右侧整体的展示

                            //如果编辑展示那么首页右侧【电话按钮】隐藏。
//                            ((FrameLayout) toolbar.findViewById(R.id.layoutweiminphone)).setVisibility(View.GONE);


                            //第二层判断到底 普通类的按钮展示还是特殊类的按钮展示
                            if (isNomalOrRoundOrColor == 1) {//1第一种风格，是正常的nomall按钮 填充文字的

                                //2018年04月13日，
                                CommUtils.setViewVisible(((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)));

                                if (((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)) != null) {
                                    ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setText(textContent);
                                }

                            } else if (isNomalOrRoundOrColor == 2) {//这是圆角的和背景颜色的文字

                                CommUtils.setViewVisible(((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)));

                                if (((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)) != null) {
                                    ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setText(textContent);
                                    //这种特别
                                    //((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setTextColor(ColorUtils.getColor(R.color.red_pressed));
                                    ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setTextColor(ColorUtils.getColor(R.color.buttonnomcolor));
                                }

                            } else if (isNomalOrRoundOrColor == 3) {

                                //有圆角的round代码
                                CommUtils.setViewVisible(((com.flyco.roundview.RoundTextView) toolbar.findViewById(R.id.top_arrow_rightround)));

                                if (((com.flyco.roundview.RoundTextView) toolbar.findViewById(R.id.top_arrow_rightround)) != null) {

                                    ((com.flyco.roundview.RoundTextView) toolbar.findViewById(R.id.top_arrow_rightround)).setText(textContent);
                                    //这种特别
                                    //((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setTextColor(ColorUtils.getColor(R.color.red_pressed));
                                    //((com.flyco.roundview.RoundTextView) toolbar.findViewById(R.id.top_arrow_rightround)).setTextColor(ColorUtils.getColor(R.color.white));

                                    ((com.flyco.roundview.RoundTextView) toolbar.findViewById(R.id.top_arrow_rightround)).setOnClickListener(clickListener);

                                }

                            }

                            //这个顶部的右侧文字通用，文字的点击事件通用。
                            if (clickListener != null) {
                                ((TextView) toolbar.findViewById(R.id.top_arrow_rightinhome)).setOnClickListener(clickListener);
                            }

                        }

                    }

                }
            }

        }

    }

    public void initloading() {

        loading = (FrameLayout) findViewById(R.id.loadingfragmentall);

        if (loading != null) {

            if (NetworkUtils.isConnected()) {

                loading.setFocusable(false);
                loading.setPressed(false);

                loading.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        //LogUtils.d("itchen--->点击 loading");
                        // 消耗点击
                        //CommUtils.displayToastShort(ErrorActivity.this,ConstantApi.NETWORKFAIL);

                    }
                });

            } else {

                loading.setFocusable(false);
                loading.setPressed(false);

                loading.setOnClickListener(new NodataClicker());

            }

            layoutNoData = ViewUitls.getLayoutNoData(loading);
            no_data_one = ViewUitls.getNo_data_one(loading);

            //buttonTryAgain = ViewUitls.getButtonTryAgain(loading);
            //buttonTryAgain.setOnClickListener(new NodataClicker());

            layoutNullData = ViewUitls.getLayoutNullData(loading);
            imageViewErrorNull = ViewUitls.getImageViewErrorNull(loading);
            textViewErrorNull = ViewUitls.getTextViewErrorNull(loading);

            //再次约定 让隐藏布局
            if (loading.getVisibility() == View.VISIBLE) {
                loading.setVisibility(View.GONE);
            }
        }

    }

    /**
     * @date 2018/6/5 0005
     * @auther itchenqi
     * @description 填充点击无网络再次重新加载网络的类
     */
    public class NodataClicker implements OnClickListener {

        /**
         * 特殊的网络的错误提示界面,放在这里合适不合适还不够清楚
         */
        private AlertView alertViewNet;

        @Override
        public void onClick(View v) {

            if (!DoubleClickListener.isFastDoubleClick()) {

                if (NetworkUtils.isConnected()) {

                    onClickNodata(v);

                } else {

                    CommUtils.checkDialog(alertViewNet);

                    //打开网络设置
                    alertViewNet = new AlertView(ConstantSign.ALERT_TITLE, //
                            ConstantSign.NET_WORKSETTING, //
                            getString(R.string.settingcancel), //
                            new String[]{getString(R.string.settingopen)}, //
                            null, //
                            ErrorActivity.this,//
                            AlertView.Style.Alert, //
                            new OnItemClickListener() {//
                                @Override
                                public void onItemClick(Object o, int position) {//
                                    if (position != AlertView.CANCELPOSITION) {
                                        NetworkUtils.openWirelessSettings();//
                                    }
                                }//
                            });
                    alertViewNet.setCancelable(true)//
                            .show();//
                }
            }
        }

    }

    protected abstract void onClickNodata(View v);

    //有的界面不需要这个可以不用必须实现导致语法错误
	/*protected void initToolBar(String titleName,int viewId){

		mToolbar =ViewUitls.findViewById(this,viewId);

		if (mToolbar!=null){
			mToolbar.setTitle("");
			setSupportActionBar(mToolbar);
		}

	};*/

    protected abstract void initViews();

    protected abstract void gainDatas();

    protected abstract void methodBack();

    //父类内通用的关闭 back 方法：
    protected void methodBackFinish() {
        if (ActivityUtils.isActivityAlive(this)) {
            ActivityUtils.finishActivity(this);
        }
    }

    /*
     * @Author:itchenqi175@163.com
     * @Time:2023-08-08  16:18
     * @Description:界面之中涉及一些提交成功的封装
     */
    protected void methodSubmitSuccess(Activity _activity, DoSomeThingListener _doSomeThingListener) {

        CommUtils.checkDialog(mAlertView);
        mAlertView = new AlertView(StringUtils.getString(R.string.clearaddorsubmitsuretitletips), //
                getString(R.string.add_submit_success), //
                null, //
                null, //
                null, //
                _activity, //
                AlertView.Style.Alert, //
                null);
        mAlertView.setCancelable(true).show();//

        mCompositeDisposable.add(Observable.timer(ConstantApi.ALERTVIEW_TIME_DELAY, TimeUnit.MILLISECONDS)
                .subscribeOn(AndroidSchedulers.mainThread())//
                .observeOn(AndroidSchedulers.mainThread())//
                .compose(ErrorActivity.this.bindUntilEvent(ActivityEvent.DESTROY))//
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {

                        if (mAlertView != null) {
                            if (mAlertView.isShowing()) {
                                mAlertView.dismiss();
                                mAlertView = null;
                            }
                        }

                        if (_doSomeThingListener != null) {
                            _doSomeThingListener.doSomeThing();
                        }

                    }
                }));

    }

    /*
     * @Author:itchenqi175@163.com
     * @Time:2023-08-08  16:18
     * @Description:界面之中涉及一些提交成功的封装
     */
    protected void methodSubmitSuccessTwoSecond(Activity _activity, DoSomeThingListener _doSomeThingListener) {

        CommUtils.checkDialog(mAlertView);
        mAlertView = new AlertView(StringUtils.getString(R.string.clearaddorsubmitsuretitletips), //
                getString(R.string.add_submit_success), //
                null, //
                null, //
                null, //
                _activity, //
                AlertView.Style.Alert, //
                null);
        mAlertView.setCancelable(true).show();//

        mCompositeDisposable.add(Observable.timer(ConstantApi.ALERTVIEW_TIME_DELAY, TimeUnit.MILLISECONDS)
                .subscribeOn(AndroidSchedulers.mainThread())//
                .observeOn(AndroidSchedulers.mainThread())//
                .compose(ErrorActivity.this.bindUntilEvent(ActivityEvent.DESTROY))//
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {

                        if (mAlertView != null) {
                            if (mAlertView.isShowing()) {
                                mAlertView.dismiss();
                                mAlertView = null;
                            }
                        }

                        if (_doSomeThingListener != null) {
                            _doSomeThingListener.doSomeThing();
                        }

                    }
                }));

    }

    //提交成功但是要自定义标题
    protected void methodSingleSubmitSuccessCustomTitle(Activity _activity, String tileTips, DoSomeThingListener _doSomeThingListener) {

        CommUtils.checkDialog(mAlertView);

        mAlertView = new AlertView(StringUtils.getString(R.string.clearaddorsubmitsuretitletips), //
                tileTips, //
                null, //
                null, //
                null, //
                _activity, //
                AlertView.Style.Alert, //
                null);
        mAlertView.setCancelable(true).show();//

        mCompositeDisposable.add(Observable.timer(ConstantApi.ALERTVIEW_TIME_DELAY, TimeUnit.MILLISECONDS)
                .subscribeOn(AndroidSchedulers.mainThread())//
                .observeOn(AndroidSchedulers.mainThread())//
                .compose(ErrorActivity.this.bindUntilEvent(ActivityEvent.DESTROY))//
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {

                        if (mAlertView != null) {
                            if (mAlertView.isShowing()) {
                                mAlertView.dismiss();
                                mAlertView = null;
                            }
                        }

                        if (_doSomeThingListener != null) {
                            _doSomeThingListener.doSomeThing();
                        }

                    }
                }));

    }

    //创建弹窗的类型，是加载数据或者是提交中
//    protected void method_create_materialDialog(String _tipsToast) {
//        CommUtils.checkMaterialDialog(materialDialog);
//        //materialDialog = CommUtils.createMaterialDialog(mActivityInstance, ConstantSign.TIPS_LOADING);
//        materialDialog = CommUtils.createMaterialDialog(mActivityInstance, _tipsToast);
//    }

    protected void method_create_materialDialog(Activity _activity, String _tipsToast) {

        CommUtils.checkMaterialDialog(materialDialog);
        //materialDialog = CommUtils.createMaterialDialog(mActivityInstance, ConstantSign.TIPS_LOADING);
        materialDialog = CommUtils.createMaterialDialog(_activity, _tipsToast);
    }

    protected void ClickeOnEvent(View view) {

    }

    //______________________________________________________________________________
//这里准备抽取出来一个按钮的点击事件出来
    public final class ClickEventOutActivity implements OnClickListener {
        @Override
        public void onClick(View view) {
            //所有的界面都要控制双击
            if (!DoubleClickListener.isFastDoubleClick()) {
                ClickeOnEvent(view);
            }
        }
    }

    //______________________________________________________________________________

    @Override
    protected void onResume() {
        super.onResume();
        //更新过滤一遍,子类就不需要再次获取
        mSession = Session.get(this);
//        LogUtils.d("itchen----ErrorActivity---onResume--onResume---onResume---onResume--onResume");
    }

    /*@Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
    }*/

    /*@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
    }*/

    public void sendMsg(Handler mBaseHandler, int what, Object obj) {
        Message msg = mBaseHandler.obtainMessage(what);
        msg.obj = obj;
        mBaseHandler.sendMessage(msg);
    }

    public void loadingGone() {

        ViewUitls.LoadingGone(loading);

        if (layoutNoData != null) {
            if (layoutNoData.getVisibility() == View.VISIBLE) {
                layoutNoData.setVisibility(View.GONE);
            }
        }

        if (layoutNullData != null) {
            if (layoutNullData.getVisibility() == View.VISIBLE) {
                layoutNullData.setVisibility(View.GONE);
            }
        }

    }

    public void netWorkError() {

        //LogUtils.d("itchen---测试执行 netWorkError 外侧");

        //有可能是有空指针异常的
        try {
            //do
            if (loading != null) {
                //LogUtils.d("itchen---测试执行 netWorkError loading 不是null");
                ViewUitls.LoadingVisible(loading);

                if (layoutNoData != null) {

                    if (layoutNoData.getVisibility() == View.GONE) {
                        layoutNoData.setVisibility(View.VISIBLE);
                        //LogUtils.d("itchen--->执行--layoutNoData--VISIBLE");
                    }
                }

                if (layoutNullData != null) {

                    if (layoutNullData.getVisibility() == View.VISIBLE) {
                        layoutNullData.setVisibility(View.GONE);
                    }
                }

            } else {

                //LogUtils.d("itchen---测试执行 netWorkError loading 居然等于null");
            }

        } catch (Exception e) {
            //catch
            e.printStackTrace();
        }

        // 添加提示的文字--
        // LogUtils.nodataText(layoutNoData, no_data_one, no_data_two,
        // ConstantNetQ.networkfail_one, ConstantNetQ.networkfail_two);

    }


    public void fillNullDataView(String message, int imageResourecesId) {

        if (loading != null) {

            ViewUitls.LoadingVisible(loading);

            if (layoutNoData != null) {
                if (layoutNoData.getVisibility() == View.VISIBLE) {
                    layoutNoData.setVisibility(View.GONE);
                }
            }

            if (layoutNullData != null) {
                if (layoutNullData.getVisibility() == View.GONE) {
                    layoutNullData.setVisibility(View.VISIBLE);
                }
            }

            if (textViewErrorNull != null) {
                textViewErrorNull.setText(message);
            }

            if (imageViewErrorNull != null) {

                //2018年02月06日封装为动态填充空界面图片。动态的界面
                imageViewErrorNull.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), imageResourecesId));

				/*if (imageResourecesId == ConstantApi.ICON_NETWORK) {
					imageViewErrorNull.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.noaddress_error));
				} else if (imageResourecesId == ConstantApi.ICON_CURRENTLY) {
					imageViewErrorNull.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.connnect_error));
				}*/

            }

        }

    }


    /**
     * 智能的分页内容,和 fragment类似
     */
//    public int setSmartPaging(int _totalCounts, SmartRefreshLayout _smartRefreshLayout) {
//
//        int currentTotalPageNumberCount = 1;
//
//        //总共有几个页面
//        if (_totalCounts < Parameterkey.pageSize_default) {//数据总值内容是1，说明不够10条或者刚好10条数据，只有1页。刚好10条是1；
//
//            currentTotalPageNumberCount = Parameterkey.totalPageNumberCount_onePage;
//            _smartRefreshLayout.finishLoadMoreWithNoMoreData();
//
//            //pageNum_upLoad = Parameterkey.pageNum_default_first;//1
//
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总数量 小于10-总共有1页数据=>" + _totalCounts);
//
//            return currentTotalPageNumberCount;
//
//        } else if (_totalCounts == Parameterkey.pageSize_default) {
//
//            currentTotalPageNumberCount = Parameterkey.totalPageNumberCount_onePage;
//            _smartRefreshLayout.finishLoadMoreWithNoMoreData();
//
//            //pageNum_upLoad = Parameterkey.pageNum_default_first;//1
//
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总数量 等于10-总共有1页数据");
//
//            return currentTotalPageNumberCount;
//
//        } else if (_totalCounts > Parameterkey.pageSize_default) {//多于10,如果恰好40条，那么就是4页，如果是41条，那么就是5页，要新增一个页；
//
//            //如果【总量】取余10，可以被10整除，那么就是整页整页，不用加1；
//            int result = _totalCounts % Parameterkey.pageSize_default;
//            if (result == 0) {
//                currentTotalPageNumberCount = (_totalCounts / Parameterkey.pageSize_default);
//            } else {
//                currentTotalPageNumberCount = (_totalCounts / Parameterkey.pageSize_default) + Parameterkey.increment_unit;//(11/10=1)
//            }
//            _smartRefreshLayout.setEnableLoadMore(true);
//
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总量是=>" + _totalCounts + "条--总共有->" + currentTotalPageNumberCount + "个页面");
//
//            //pageNum_upLoad = totalCounts / pageSize_upLoad + 1;
//
//            return currentTotalPageNumberCount;
//
//        }
//
//        return currentTotalPageNumberCount;
//
//    }

    //#######################################################################


    //    版权声明：本文为CSDN博主「光着脚丫子飙五环」的原创文章，遵循 CC 4.0 BY-SA 版权协议，转载请附上原文出处链接及本声明。
//    原文链接：https://blog.csdn.net/bin622/article/details/81062867
    @Override
    protected void onDestroy() {

        //2018年01月15日这个后期观察优化
        // 和声明周期绑定，退出时取消这个队列中的所有请求，当然可以在你想取消的时候取消也可以，不一定和声明周期绑定。
        //2018年01月17日考虑 要不要只有在应用退出的时候才使用，因为其他页面的tag大部分是当前Activity的子类
        //Kalle.cancel(this);
        //或者使用 RequestManager.getInstance().cancel(cancelTag);
        super.onDestroy();
        //2017年1月13日这个因为内存泄露待测试
        //MianTaskManager.getInstance().popOneActivity(this);
        CommUtils.checkDialog(mAlertView);
        if (mAlertView != null) {
            mAlertView = null;
        }

        CommUtils.checkMaterialDialog(materialDialog);

//        RxBus.getInstance().unSubscribe(this);

        //Leaks内存泄漏检测Rxbus
        if (mCompositeDisposable != null) {
            //释放句柄
            mCompositeDisposable.clear();
//            mCompositeDisposable.dispose();
        }

        if (CommUtils.mAlertViewLogin != null) {
            CommUtils.checkDialog(CommUtils.mAlertViewLogin);
            CommUtils.mAlertViewLogin = null;
        }

    }

    /**
     * 停止加载的
     */
    /*public void finishRefresh(RefreshLayout smartRefreshLayout) {

        if (smartRefreshLayout != null) {
            smartRefreshLayout.finishRefresh();
        }

    }*/

    /**
     * 停止下拉刷新，因为可能网络不好，错误界面已经出来，但是刷新仍在继续
     */
    /*public void finishRefresh(SmartRefreshLayout smartRefreshLayout) {

        if (smartRefreshLayout != null) {
            smartRefreshLayout.finishRefresh();
        }

    }*/

    /**
     * 关闭上拉加载更多效果
     */
    /*public void setEnableLoadmore(SmartRefreshLayout smartRefreshLayout, boolean isEnable) {
        //这里不让上拉了
        if (smartRefreshLayout != null) {
            smartRefreshLayout.setEnableLoadMore(isEnable);
        }
    }*/

    /**
     * 开启自动刷新
     */
    /*public void autoRefresh(RefreshLayout refreshLayout) {

        if (refreshLayout != null) {
            refreshLayout.autoRefresh();
        }
    }*/

    /**
     * 展开没有更多数据
     */
    public void setFinishLoadMoreWithNoMoreData(SmartRefreshLayout smartRefreshLayout, boolean isEnable) {
        //这里不让上拉了
        if (smartRefreshLayout != null) {
            smartRefreshLayout.setEnableFooterFollowWhenNoMoreData(true);
            smartRefreshLayout.finishLoadMoreWithNoMoreData();
        }
    }

    /**
     * 关闭上拉加载更多效果
     */
    public void setEnableLoadmore(SmartRefreshLayout smartRefreshLayout, boolean isEnable) {
        //这里不让上拉了
        if (smartRefreshLayout != null) {
            smartRefreshLayout.setEnableLoadMore(isEnable);
        }
    }

    //    public enum CallHistoryBusinessType {
//
//        BUSINESSTYPE_1("callHistoryBusinessType1", "潜客管理"),
//        BUSINESSTYPE_2("callHistoryBusinessType2", "客户投诉"),
//        BUSINESSTYPE_3("callHistoryBusinessType3", "车辆维保"),
//        BUSINESSTYPE_4("callHistoryBusinessType4", "车辆评估"),
//        BUSINESSTYPE_5("callHistoryBusinessType5", "车辆认证"),
//        BUSINESSTYPE_6("callHistoryBusinessType6", "车辆寄售"),
//        BUSINESSTYPE_7("callHistoryBusinessType7", "客户档案"),
//        BUSINESSTYPE_8("callHistoryBusinessType8", "餐券发放"),
//        BUSINESSTYPE_9("callHistoryBusinessType9", "客户关怀"),
//        BUSINESSTYPE_10("callHistoryBusinessType10", "车辆保险");
//直接拨打电话的能力:mPhoneNumber是原始的手机号
    protected void clickButton_toCallPhone(Activity _activity, String mPhoneNumber, String _buinessType) {

        if (!TextUtils.isEmpty(mPhoneNumber)) {

            CommUtils.checkDialog(mAlertView);

            //二次确认弹窗提示
            mAlertView = new AlertView(ConstantSign.ALERTVIEW_TITLE_FOR_PHONE,//
                    //mPhoneNumber, //展示出来的手机号也是脱敏的，直到到了拨打界面才展示
                    StringCodeUtils.mobileEncrypt(mPhoneNumber), //展示出来的手机号也是脱敏的，直到到了拨打界面才展示
                    ConstantSign.ALERTVIEW_LEFT_CANCEL,//
                    new String[]{ConstantSign.ALERTVIEW_RIGHT_COPY_INFORMATION}, //
                    null, //
                    _activity, //
                    AlertView.Style.Alert,//
                    new com.ygxsk.carhome.alertview.OnItemClickListener() {
                        @Override
                        public void onItemClick(Object o, int position) {

                            if (position != AlertView.CANCELPOSITION) {

                                if (!TextUtils.isEmpty(mPhoneNumber)) {

                                    _activity.startActivity(CommUtils.callThePhoneNumAction_dial(mPhoneNumber));

                                    //如果有拨打电话的意图，立即上传信息,该界面还未被杀死
                                    //t(String _phone,String _businessType) {
                                    callPhone_upLoad_intent(mPhoneNumber, _buinessType);

                                } else {
                                    ToastUtils.showShort(R.string.hasfailgetphonenumber);
                                }

                            }
                        }
                    }
            );

            mAlertView.setCancelable(true).show();

        } else {

            String phoneInfo = getString(R.string.hasfailgetphonenumber);
            PopTip.show(phoneInfo).iconWarning();

        }

    }

    //true隐藏，false显示
//    public void setHideStausbar(boolean enable) {
//        if (enable) {
//            WindowManager.LayoutParams attrs = getWindow().getAttributes();
//            attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
//            getWindow().setAttributes(attrs);
//        } else {
//            WindowManager.LayoutParams attrs = getWindow().getAttributes();
//            attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
//            getWindow().setAttributes(attrs);
//        }
//    }

//    public int setSmartPaging(int _totalCounts, SmartRefreshLayout _smartRefreshLayout) {
//
//        int currentTotalPageNumberCount = 1;
//
//        //总共有几个页面
//        if (_totalCounts < Parameterkey.pageSize_default) {//数据总值内容是1，说明不够10条或者刚好10条数据，只有1页。刚好10条是1；
//
//            currentTotalPageNumberCount = Parameterkey.totalPageNumberCount_onePage;
//            _smartRefreshLayout.finishLoadMoreWithNoMoreData();
//
//            //pageNum_upLoad = Parameterkey.pageNum_default_first;//1
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总数量 小于10-总共有1页数据=>" + _totalCounts);
//
//            return currentTotalPageNumberCount;
//
//        } else if (_totalCounts == Parameterkey.pageSize_default) {
//
//            currentTotalPageNumberCount = Parameterkey.totalPageNumberCount_onePage;
//            _smartRefreshLayout.finishLoadMoreWithNoMoreData();
//
//            //pageNum_upLoad = Parameterkey.pageNum_default_first;//1
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总数量 等于10-总共有1页数据");
//
//            return currentTotalPageNumberCount;
//
//        } else if (_totalCounts > Parameterkey.pageSize_default) {//多于10,如果恰好40条，那么就是4页，如果是41条，那么就是5页，要新增一个页；
//
//            //如果【总量】取余10，可以被10整除，那么就是整页整页，不用加1；
//            int result = _totalCounts % Parameterkey.pageSize_default;
//            if (result == 0) {
//                currentTotalPageNumberCount = (_totalCounts / Parameterkey.pageSize_default);
//            } else {
//                currentTotalPageNumberCount = (_totalCounts / Parameterkey.pageSize_default) + Parameterkey.increment_unit;//(11/10=1)
//            }
//            _smartRefreshLayout.setEnableLoadMore(true);
//
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "总量是=>" + _totalCounts + "条--总共有->" + currentTotalPageNumberCount + "个页面");
//
//            //pageNum_upLoad = totalCounts / pageSize_upLoad + 1;
//
//            return currentTotalPageNumberCount;
//
//        }
//
//        return currentTotalPageNumberCount;
//
//    }

    // : 2023-09-05 11:28  上传用户拨打电话的意图;
    //上传用户拨打电话的意图
    private void callPhone_upLoad_intent(String _phone, String _businessType_click_model) {

//        {
//                "shopInfoId": 1495, //店铺id
//                "communityId": 2, //园区id
//                "phone": "15176152266", //手机号
//                "businessType": 2
//        }

//        {
//                "code":"callHistoryBusinessType9",
//                "keyBookId":660,
//                "name":"客户关怀",
//                "type":"callHistoryBusinessType",
//                "typeName":"拨号业务类型",
//                "value":"9"
//        }

        HashMap<String, Object> map = new HashMap<>();
        map.put(Parameterkey.shopInfoId, mSession.getShopInfoId());
        map.put(Parameterkey.communityId, mSession.getCommunityId());
        map.put(Parameterkey.phone, _phone);

        //------------------------------------------------------------------------------------------------------------------
        ArrayList<EvaluateWadeDataInfo> typeValueList = null;
//        String _businessType = "";
        String jsonString = MMKV.defaultMMKV().decodeString(ConstantSign.P_MMKV_CALL_PHONE);

        if (!TextUtils.isEmpty(jsonString)) {
            typeValueList = (ArrayList<EvaluateWadeDataInfo>) JSON.parseArray(jsonString, EvaluateWadeDataInfo.class);
//            LogUtils.d(ConstantSign.LOGCAT_NOMAL + "typeValueList-->" + typeValueList);
        }

        if (typeValueList != null && !typeValueList.isEmpty()) {

            Iterator<EvaluateWadeDataInfo> iterator = typeValueList.iterator();
            if (iterator != null) {
                while (iterator.hasNext()) {

                    EvaluateWadeDataInfo item = iterator.next();

                    if (item != null) {

                        if (TextUtils.equals(_businessType_click_model, item.getCode())) {//判断条件

                            //执行 取出 value 上传，code仅仅是用来做判断
                            map.put(Parameterkey.businessType, item.getValue());

                            break;
                        }
                    }
                }
            }

        }
        //------------------------------------------------------------------------------------------------------------------

        AddLogUpLoadInfo addLogUpLoadInfo = new AddLogUpLoadInfo();
        addLogUpLoadInfo.setActivity(mActivityInstance);
        addLogUpLoadInfo.setWhat(ConstantApi.WHAT_ADDCALLHISTORY_URL);//请求数字标识
        addLogUpLoadInfo.setUrlPath(ApiService.addCallHistory_url);//url地址
        addLogUpLoadInfo.setRequestMethod(ConstantSign.REQUEST_METHOD_POST);//POST 或者 GET
        addLogUpLoadInfo.setToastToUser(false);//展示给用户的标志
        addLogUpLoadInfo.setHashMapParameter(map);

        NetworkManager.getInstance().initRetrofitRxJava()
                .create(ApiService.class)
                .addCallHistory(RequestBody.create(JSON.toJSONString(map, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue),
                        MediaType.parse(ApiService.HEADER_JSON)))
//                .addCallHistory(Parameterkey.out_door_type)
                .compose(ErrorActivity.this.bindUntilEvent(ActivityEvent.DESTROY))
                .compose(new ResponseTransformer<>(addLogUpLoadInfo, new ApiRequestSubListener<String>() {
                    @Override
                    public void handlerSomeThingNotSuccessDataForItSelf(int what_method, String serverCode, String serverMessage) {
                        super.handlerSomeThingNotSuccessDataForItSelf(what_method, serverCode, serverMessage);
                        //
                    }
                })).subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String archiveTypes) throws Throwable {

                    }
                }, new ErrorConsumer() {

                    @Override
                    protected void error(ApiException apiException) {

                    }
                });

    }

    /**
     * 报错提示封装
     *
     * @param apiException
     */
    public void function_apiException(ApiException apiException) {

        if (apiException != null) {
            if (!TextUtils.isEmpty(apiException.getDisplayMessage())) {
                ToastUtils.showShort(apiException.getDisplayMessage());
            }
        }

    }

    //无数据的提示，要不要特殊提示的
    public void function_response_20002(String _serverCode, String _serverMessage, AddLogUpLoadInfo _addLogUpLoadInfo, boolean isShowToastOrNot) {

        String resultMessage = "";

        if (!TextUtils.isEmpty(_serverMessage)) {
            resultMessage = _serverMessage;
        } else {
            resultMessage = getResources().getString(R.string.action_abnormal_toast);
        }

        if (TextUtils.equals(_serverCode, ConstantSign.RESPONSE_20002)) {

            //{"data":"","message":"无数据","code":"20002"}
            //无数据这个就不提示了，因为筛选条件很多，一会一提示 不友好；
            if (_addLogUpLoadInfo.isAlertToUser()) {

                CommUtils.checkDialog(mAlertView);
                mAlertView = CommUtils.method_showAlertViewSingleSlowly(mActivityInstance, ConstantSign.ALERT_TITLE, resultMessage, true);
                mAlertView.show();

            } else {

                if (isShowToastOrNot) {
                    //如果让展示20002的空数据{"data":"","message":"无数据","code":"20002"}，那么就展示，主页列表一半不提示，显得多余
                    ToastUtils.showShort(resultMessage);
                }

//                if (!TextUtils.isEmpty(resultMessage)) {
//                    ToastUtils.showShort(resultMessage);
//                } else {
//                    ToastUtils.showShort(resultMessage);
//                }

            }

        } else {

            if (_addLogUpLoadInfo.isToastToUser()) {
                ToastUtils.showShort(resultMessage);
            } else {
                LogUtils.d(ConstantSign.LOGCAT_NOMAL + getResources().getString(R.string.donot_to_user));
            }

        }

    }

    //初始化相机
    public CameraSetting initCameraSetting() {

        CameraSetting cameraSetting = new CameraSetting();
        cameraSetting.mimeTypeSet(MimeType.ofImage());


//        mGlobalSetting = MultiMediaSetting.from(mActivityInstance).choose(MimeType.ofImage());
//        mGlobalSetting.albumSetting(albumSetting);

        return cameraSetting;
    }

}
